package cn.lyjuan.payment.third.base.model.exception;

import cn.lyjuan.base.exception.IAppCode;
import cn.lyjuan.base.exception.IAppModuleEnum;
import cn.lyjuan.base.exception.impl.BaseModule;

public enum ErrCodeImpl implements IAppCode {
    ERR("1001", "err")

    /**
     * 无效的值
     */
    , INVALID_UPDATE_VALUE("11001", "invalid_update_value")

    /**
     * 交易下单处理失败
     */
    , PAY_ORDER_FAILED("12001", "pay_order_failed")
    /**
     * 交易通知处理失败
     */
    , PAY_NOTIFY_FAILED("12002", "pay_notify_failed")

    /**
     * 交易查询处理失败
     */
    , PAY_QUERY_FAILED("12003", "pay_query_failed")

    /**
     * 交易数据已发生更改
     */
    , PAY_DATA_CHANGED("12004", "pay_data_changed")
    /**
     * 独立参数无效
     */
    , PAY_PARAMS_INVALID("12005", "pay_params_invalid")
    /**
     * 交易退款失败
     */
    , PAY_REFUND_FAILED("12006", "pay_refund_failed")
    /**
     * 退款金额超过限制
     */
    , REFUND_AMOUNT_EXCEEDS_LIMIT("12007", "refund_amount_exceeds_limit")
    /**
     * 转账失败
     */
    , TRANSFER_FAIL("12008", "transfer_fail")
    /**
     * 独立参数无效
     */
    , TRANSFER_PARAMS_INVALID("12009", "transfer_params_invalid")
    /**
     * 内购凭据-已被绑定
     */
    , PAY_IAP_RECEIPT_ALREADY_USE("12010", "iap_receipt_already_use")
    /**
     * 内购凭据-数量不一致
     */
    , PAY_IAP_RECEIPT_QUANTITY_NOT_SAME("12010", "iap_receipt_quantity_not_same")

    /**
     * 应用的支付渠道已存在
     */
    , APP_CHL_EXIST("13001", "app_chl_exist")
    /**
     * 应用交易流水号不存在
     */
    , PAY_APP_TRAN_NO_NOT_FOUND("14001", "pay_app_tran_no_not_found")
    /**
     * 应用渠道正在审核中
     */
    , PAY_CHL_CONFIRMING("14002", "pay_chl_confirming")
    /**
     * 应用渠道已锁定
     */
    , PAY_CHL_LOCKED("14003", "pay_chl_locked")
    /**
     * 应用渠道审核未通过
     */
    , PAY_CHL_REJECT("14004", "pay_chl_reject")
    /**
     * 应用渠道不存在
     */
    , PAY_CHL_NOT_FOUND("14005", "pay_chl_not_found");


    private String code;

    private String msg;


    @Override
    public IAppModuleEnum module() {
        return BaseModule.BASE_MODEL;
    }

    @Override
    public String code() {
        return this.code;
    }

    @Override
    public String msg() {
        return this.msg;
    }

    ErrCodeImpl(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }
}
